package cn.itcast.web.controller.system;

import cn.itcast.domain.system.Dept;
import cn.itcast.domain.system.Module;
import cn.itcast.service.system.DeptService;
import cn.itcast.service.system.ModuleService;
import cn.itcast.web.controller.BaseController;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/system/module")
public class ModuleController extends BaseController {
    @Autowired
    private ModuleService moduleService;
    @Autowired
    private DeptService deptService;

    @RequestMapping("/list")
    public String list(@RequestParam(defaultValue = "1")int pageNum, @RequestParam(defaultValue = "5")int pageSize){

        PageInfo<Module> pageInfo = moduleService.findByPage(pageNum, pageSize, getLoginCompanyId());
        //存储到域对象
        request.setAttribute("pageInfo",pageInfo);
        return "system/module/module-list";
    }

    /**
     * url:/system/Module/toAdd.do
     * 作用：进入添加模块页面
     * 参数：无
     */
    @RequestMapping("/toAdd")
    public String toAdd(){
        //查询所有模块
        List<Module> list = moduleService.findAll();
        //把模块的信息存储到域钟
        request.setAttribute("menus",list);

        return "system/module/module-add";
    }

    /**
     * url:/system/Module/edit.do
     * 作用：新增模块||更新模块
     * 参数：模块对象
     * 返回值：模块列表页面
     */
    @RequestMapping("/edit")
    public String edit(Module module){
        if (StringUtils.isEmpty(module.getId())){
            //没有带id过来，新增操作
            moduleService.save(module);
        }else {
            moduleService.update(module);
        }
        return "redirect:/system/module/list.do";
    }
    /**
     * /system/Module/toUpdate.do?id=${Module.id}
     * 作用：进入更新模块页面
     * 模块的id
     * 返回值：模块更新页面
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id){
        //1.根据id查询当前用户信息
        Module module = moduleService.findById(id);

        //2. 查询所有模块信息
        List<Module> moduleList = moduleService.findAll();
        //3. 把用户的信息存储到域中
        request.setAttribute("menus", moduleList);
        request.setAttribute("module",module);


        return "system/module/module-update";
    }

    /**
     * /system/Module/delete.do?id="+id
     * 作用：删除模块
     */
    @RequestMapping("/delete")
    public String delete(String id){
        moduleService.delete(id);
     return "redirect:/system/module/list.do";
    }
}
